Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
РОЗРАХУНКОВО-ГРАФІЧНА РОБОТА
з дисципліни “Програмування алгоритмічних структур”
Тема “Програмування базових алгоритмів”
Варіант-15
Завдання на розрахунково-графічну роботу (РГР):
1.Розробити алгоритмиі написати програми мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань, поданих вдодатках1,2відповіднодо індивідуального варіанта. Варіант обрати за списком групи.
2.Розробити програмний проект в середовищі IntellijIDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками(наприклад, Excel, калькулятор, тощо).
3.Оформити РГР та вчасно надіслати викладачу на перевірку файл РГР та файл програми
Завдання 1:
Система лінійних алгебраїчних рівнянь (СЛАР) задана розширеною матрицею системи. Розв’язати СЛАР методом Гауса. Вивести на екран: початкову матрицю, трикутникову матрицю, вектор результатів.
/
Завдання 2:
Розв’язати задачу згідно обраного варіанту. Вивести на екран початкові дані та результати обчислень Завдання виконати для трьох різних вхідних даних
/
Короткий опис рішення завдання:
Завдання №1.
Для Вирішення завдання 1, було створено три методи task11(), task12(),task13().
У методі task11() типу double[][] було розроблено прямий хід методу Гаусса (перетворення матриці у трикутникову). У цьому методі я організував цей алгоритм використовуючи цикли for і while. У результаті його виконання я повертаю трикутну матрицю, яку пізніше виводжу у методі task13().
У методі task12() типу double[] розроблено зворотній хід методу Гаусса (Розв’язування рівнянь в оберненому порядку) і заповнення всіх отриманих даних у вектор результатів. Для цього було використано цикли for і while.
У методі task13() типу void було розроблено почерговий вивід усіх векторів і матриць. Для його справної роботи був використаний перегруз методів.
У одному методі я приймаю матрицю і надалі роблю її перевірку на трикутність. Якщо матриця трикутна я надаю її відповідний заголовок і роблю її вивід. Якщо вона не трикутна, надаю їй заголовок “ Початкова матриця ” і виводжу. Перевірку та вивід матриць я організував за допомогою циклів for і while.
У другому методі я приймаю звичайний одновимірний масив(вектор результатів) і далі провожу його вивід разом із заголовком “ вектор результатів ” .
Завдання №2.
Для вирішення цього завдання я створив метод task2().
Моєю ідею щодо його розв’язання було отримання і передача у метод task2() будь-якого числа, створення нового рядку і за допомогою методу String.valueOf() отримати це число у типі String і два рази додати у новий рядок. Цей метод повертає змінну str типу String де до будь-якого числа приписане таке саме число.
Блок-схема до Завдання №2:
/
Програма проекту(копія коду):
package com.company;
import java.util.Scanner;
public class RgrTr15Fund {
public static void main(String[] args) {
// -------- TASK1 ---------
int n = 5;
int m = n+1;
double[] x;
double[][] mat = {{9,3,-5,0,2,-62.6},
{-1,1,7,8,10,-18.4},
{4,8,-4,-1,3,-6.6},
{10,-8,-5,-10,1,-64.2},
{10,2,-9,-1,9,-46.7}};
System.out.println("---------- TASK1 -----------");
task13(mat,n,m);
System.out.printf("\n\n");
// Зведення до трикутної матриці
task11(mat,n,m);
task13(mat,n,m);
// Рішення трикутної матриці
x = task12(mat,n,m);
System.out.printf("\n\n");
task13(x,n);
System.out.printf("\n\n");
//------------ TASK2 -------------
System.out.println("---------- TASK2 -----------");
Scanner scan = new Scanner(System.in);
System.out.printf("Уведіть три будь-яких числа:\n");
int number1 = scan.nextInt();
System.out....